<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="../../vue.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.7/dayjs.min.js"></script>
    <title>Document</title>
</head>

<body>
    <!-- 
        过滤器：
            定义：对要显示的数据进行特定格式化后再显示（适用于一些简单逻辑的处理）、
            语法：
                1.注册过滤器：Vue.filter(name,callback) 或 new Vue({
                                                                    filters:{

                                                                    }
                                                                })
                2.使用过滤器:{{xxx | 过滤器名称}}  或 v-bind:属性 = "xxx | 过滤器名称"
            备注:
                1.过滤器也开源接收额外参数.多个过滤器可以串联
                2.并没有改变原本的数据,是产生新的对应的数据
     -->
    <div id="root">
        <h2>显示格式化后的时间</h2>
        <!-- 计算属性实现 -->
        <h3>{{time}} -- {{fmtTime}}</h3>
        <!-- methods实现 -->
        <h3>{{time}} -- {{getfmtTime()}}</h3>
        <!-- 过滤器实现 -->
        <h3>{{time | timeFormater}}</h3>

        <!-- 过滤器传参实现 -->
        <h3>{{time | timeFormater('YYYY年MM月DD日') | myslice}}</h3>
    </div>
</body>
<script>
    // 全局注册过滤器  必须在new Vue 实例之前
    Vue.filter('myslice', function (value) {
        return value.slice()
    })

    const vm = new Vue({
        data: {
            time: 1681714757387
        },
        computed: {
            fmtTime() {
                return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')
            }
        },
        methods: {
            getfmtTime() {
                return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')
            }
        },
        // 局部注册过滤器
        filters: {
            timeFormater(value, str = 'YYYY年MM月DD日 HH: mm: ss') {
                return dayjs(value).format(str)
            },
            // myslice(value){
            //     return value.slice()
            // }
        }
    }).$mount('#root')
</script>

</html>